package com.common.app.utls.share

import android.app.Activity
import android.content.ContentResolver
import android.content.Context
import android.net.Uri
import android.text.TextUtils
import com.common.base.app.extras.yes
import com.common.base.config.AppConfig.WX_APP_ID
import com.common.base.config.AppConfig.WX_FX_GO_SHARE_ID
import com.common.base.utils.ToastUtils
import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram
import com.tencent.mm.opensdk.openapi.IWXAPI
import com.tencent.mm.opensdk.openapi.WXAPIFactory


/**
 *
 * 作者：sosou
 *
 * 版本：1.0
 *
 * 创建日期：14/8/2023
 *
 * 描述：
 *
 * 修订历史：
 *
 */
class WXLaunchMiniUtil {

    var path: String? = null //拉起小程序页面的可带参路径，不填默认拉起小程序首页,默认发现GO首页

    var extData: String? = null

    var miniProgramType = 0//0正式版 1开发版 2体验版

    private var api: IWXAPI? = null


    //跳转
    fun sendReq(mActivity: Activity) {
        if (!isWeixinAvilible(mActivity)) {
            ToastUtils.showToast("请先安装微信!")
            return
        }

        val resolver: ContentResolver = mActivity.contentResolver
        val uri = Uri.parse("content://com.tencent.mm.sdk.comm.provider/launchWXMiniprogram")
        path.isNullOrEmpty().yes {
            path = "pages/index/index"
        }
        val path = arrayOf(WX_APP_ID, WX_FX_GO_SHARE_ID, path, miniProgramType.toString() + "", "")
//        var cursor: Cursor?=null
//        if(resolver.query(uri, null, null, path, null) !=null){
//            cursor?.close()
//        }
        resolver.query(uri, null, null, path, null).also {
            it?.close()
        }
    }

    //跳转
    fun sendResp(mActivity: Activity, wxShareID:String=WX_FX_GO_SHARE_ID) {
        if (!isWeixinAvilible(mActivity)) {
            ToastUtils.showToast("请先安装微信!")
            return
        }

        if (api == null) {
            api = WXAPIFactory.createWXAPI(mActivity, WX_APP_ID)
        }
        path.isNullOrEmpty().yes {
            path = "pages/index/index"
        }
        val req = WXLaunchMiniProgram.Req()
        req.userName = wxShareID // 填小程序原始id
        req.path = path //拉起小程序页面的可带参路径，不填默认拉起小程序首页
        if (!TextUtils.isEmpty(extData)) {
            req.extData = extData
        }
        //        req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版，体验版和正式版

        // 微信分享环境(默认true为现网，false为开发环境)
//        if (!Config.WX_SHARD_FLAG) {
//            // 开发版
//            req.miniprogramType = 1
//        } else {
        req.miniprogramType = miniProgramType // 可选打开 开发版，体验版和正式版
//        }

        //  req.miniprogramType =WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_PREVIEW;
        api?.sendReq(req)
    }

    //判断是否安装了微信
    fun isWeixinAvilible(context: Context): Boolean {
        val packageManager = context.packageManager // 获取packagemanager
        val pinfo = packageManager.getInstalledPackages(0) // 获取所有已安装程序的包信息
        for (i in pinfo.indices) {
            val pn = pinfo[i].packageName
            if (pn == "com.tencent.mm") {
                return true
            }
        }
        return false
    }

    /**
     * 判断是否安装了QQ
     *
     * @param context
     * @return
     */
    fun isQQClientAvailable(context: Context): Boolean {
        val packageManager = context.packageManager
        val pinfo = packageManager.getInstalledPackages(0)
        if (pinfo != null) {
            for (i in pinfo.indices) {
                val pn = pinfo[i].packageName
                if (pn == "com.tencent.mobileqq") {
                    return true
                }
            }
        }
        return false
    }
}